package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import com.sap.mw.jco.JCO.Table;

/**
 *
 * @author Ale
 * @version 1.01
 */
public abstract class GenericSAPDAO {
    
    private JCO.Table myTable;
    private String myTableName;
    
    /**
     * Obtiene todos los datos y la agrega a la Coleccion que corresponda.
     */
    public abstract void findAll() throws SapGeneralException;
    
    /**
     * Solo para las Pruebas
     */
    public abstract void printAll();

    /**
     * 
     * @return String Nombre de la Tabla
     */
    public String getMyTableName() {
        return myTableName;
    }

    protected void setMyTable(Table myTable) {
        this.myTable = myTable;
    }
    
    protected void setMyTable(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException{
        try{
            this.myTable = aFunction.getTableParameterList().getTable(this.myTableName);            
        }catch(JCO.ConversionException ex){
            throw new DataTypeInvalidConversionException(ex.getMessage());
        }catch(JCO.Exception ex){
            throw new TableNotFoundException(this.myTableName);
        }
        
        
    }

    protected void setMyTableName(String myTableName) {
        this.myTableName = myTableName;
    }

    protected Table getMyTable() {
        return myTable;
    }
    
    public void clearTableData(){
        this.myTable.clear();
    }
    
}
